#pragma once
#include <stack>
#include "GameState.hpp"

namespace Typhoon {
	class GameStateManager
	{
	public:
		GameStateManager();
		~GameStateManager();

		void Push(GameState* state);
		void Pop();

		bool Update(float dt);
		void Render();

		void Exit();

		void UpdateInput(void* input);

		SystemInfo* System;

	private:

		void StateExited(GameState* state);
		void StatePushed(GameState* state);

		std::stack<GameState*> states;

	};
}
